DEVELOPMENT THROUGH MY EYES Matthew Hartloff An almost inspiring review of the software development field. But in the end not all that inspiring. INTRO Who am I? Matthew Hartloff Jesse’s Brother Why am I here? Jesse’s Brother What questions will I answer? Was Jesse a good student? Did Jesse cry a lot? How do I manipulate Jesse? INTRO Who am I? ProtoLabs, Senior Software Developer, 10 years 2000: Graduated with a BS in Computer Science in 2000 from St Bonaventure Computer Graphics (OpenGL) 2000: Worked in Rochester doing tech support in UNIX 2001: Shifted focus to specialize in: INTRO 2003: FDM Academy to learn Java, JavaScript, JSP, CSS, Oracle DB, SQL Marketable skills 2004: Software Tester for Watershed Concepts. NC Appreciation for QA and quality code 2005: Contract position using C++ and OpenGL. NC Graphics programming was always a hobby Contract work can be lucrative, but I think it would be a great career move to come to Minnesota and work for me! Hmmm, that might just be a good idea… PROTOLABS Founded by Larry Lukis in 2000. Software engineer by trade. Uses software to make existing things better and cooler. That philosophy has been infused in the company Plastic injection molding company Proprietary software to cut the molds and quote the molds. We’ve found software can also: Cut parts out of blocks (FirstCut) Fill the molds with different materials Automate the process PROTOLABS 2005 2015 Revenue $25MM $250MM Total Employees 105 1400 Total Developers 5 70 PROTOLABS Function of Protomold Quote PMQ facilitates converting a customer model into a quote. 500 source files 12 libraries http://www.protomold.com/ProtoQuote.aspx 9 A D D I T I V E M A N U FA C T U R I N G | C N C M A C H I N I N G | I N J E C T I O N M O L D I N G GROWTH OF A SOFTWARE TEAM 2005 1. 2. 3. 4. Someone mentions a problem Developer implements it Developer builds it Developer releases it to the masses PMQ Online Quote Developers Database Developers Developers Developers Reports GROWTH OF A SOFTWARE TEAM 2005 Computer Cluster. Allows work to be parallelized, allowing complicated tasks to be completed much quicker. UK office opens. Our applications are localized 2006 Our version control system is upgraded to Subversion from SourceSafe GROWTH OF A SOFTWARE TEAM 2008 Formal code review process initiated. SmartBears Code Collaborator GROWTH OF A SOFTWARE TEAM 2009 Unit Testing introduced Japan Office opens. Japanese. 2010 Standard release cycle Blocked YouTube GROWTH OF A SOFTWARE TEAM 2011 Agile / Scrum (originally with post-it notes) GROWTH OF A SOFTWARE TEAM 2012 IPO. Subjects us to more formal rules for code submission that may affect financial results. GROWTH OF A SOFTWARE TEAM 2013 Offsite developers and contractors Jive, an internal social network GROWTH OF A SOFTWARE TEAM 2014 Acquired Fineline, a 3d printing company in North Carolina 2015 Acquired Alphaform, an injection molding and 3d printing company in Germany. GROWTH OF A SOFTWARE TEAM Current Process 2015 1. Project stories are planned out by all involved parties. 2. Tasks are estimated by devs and the sequence is determined. 3. Tasks are assigned to team members. 4. Implement the task. 5. Submit the change for code review. 6. Merge reviewed code into the main branch. 7. Plan which release code will go out on. PMQ Online Quote Marketing Executives Web Programming Team Database Users QA Managers Co-workers DBA Architects Government Business Analysts Executives Production Reports TYPICAL DAY 9:50 – Arrive at work for our daily 9:45 standup Review what’s coming up for the day. Identify issues that may be holding up progress Explain why I’m 5 minutes late. 10:00 – Check in w/ teammates and resolve any issues Very important to stay in touch with everyone in a fast growing company Throughout the day Lync messages will come in 10:30 – Check e-mails. Respond to SME questions. 11:00 – Code on task I said I would do. 12:30 – Lunch with the team 1:30 – Code on task some more 3:00 – Check the stock price, check the news. 3:15 – Do Code Reviews TYPICAL DAY 4:00 – More coding. 5:00 – Think of next great idea. Or maybe nothing. 6:00 – Go home, come up with UB presentation. Make a smashball. Other things that may happen Agile meeting. Bi-weekly scrum session. Kickoff meeting. Presentation meeting. Training. Agile training. Offsite training. ‘GeekFests’. Department-wide meeting. Company-wide meeting. SME meeting Interviews. PROTOLABS CULTURE Every software shop has a unique culture. Here’s the main differences I’ve found from it and other shops: Run by devs, not by sales or marketing. Strong culture of teamwork. Personality conflicts are minimal. We have been consistently competent and successful. Flexible deadlines for software projects Great work/life balance ITAR Can’t bring dog to work. No free lunches or drinks. No workout room. TOOLS AT PROTOLABS PMQ: PMD: PFL: FCD: MillWatcher: Cluster Monitor: PartAdder: Protoview: Intranet: Websites: Fineline Apps: AlphaForm Apps: C++ C++ C++ C++ C++ C# C# JavaScript (WebGL) ASP ASP.NET (C#) Java Java Version Control: Database: Code Review: Agile: IDE: Subversion, Git MS SQL Server SmartBears CC ScrumWise Visual Studio CODING PRACTICES • Prefer simplicity • It should be clear what it does • Try not to add too many clever ‘tricks’. No one will appreciate how clever it is, especially you in 5 years. • Name your objects, functions, and variables well. Don’t miss an opportunity for good documentation. • Try to understand some things very well. Avoid having only shallow knowledge in everything. PROJECT TEAMS The number #1 reasons projects succeed is competence. Teams need direction. People need roles. • Changing team makeup can send the team back stages. • A good leader can guide the team through the storming stage. • Some conflict is natural. • Communication within the team is key. http://www.thecoachingtoolscompany.com/ PROJECT TEAMS DISC can aid communication between your colleagues and your superiors. Each type has different methods of achieving the same goals. http://dsriddick.com/wpCMI/?page_id=887 http://multi-value.com/what-does-multi-value-do/disc/ INTERVIEWS AT PROTOLABS “Be smart and get things done” – Joel Spolsky • Meet with 3 managers and 3 developers • 2 rounds, each about 3 hours long • Each interviewer has different styles • Some stress technical skills • Some stress cultural fit • No one is perfect at performing interviews INTERVIEWS AT PROTOLABS • Do you love programming? Why? • Does it seem like you can work with other people? • Does it seem like you have the ability to solve the problems we have? • Do you have a history of seeking out and solving complex problems? • Can you stare me down? • How many ants would you need to move the Earth? • How many ants would you need to move Jupiter? CAREER PROGRESSION The organization chart is getting flatter. • • The old goal of moving up the org chart doesn’t appeal to many any more. Lateral moves are more popular Management – A facilitator. Technically gifted, but doesn’t use those skills actively anymore. Hard Tech – Technical guru. Extremely knowledgeable in many areas of technology and is often relied on for their expertise. Soft Tech – Broad knowledge of technology and people. May become project lead, business analysts, or software architect. Dark Art of Academia Contract Work CAREER PROGRESSION Goal: To become more valuable to the company. Benefits: More say in decisions. Offered better challenges. A lot of benefit of the doubt. More money. How: Stay curious. Keep learning. Keep getting better at: • Programming • Working in a team • Understanding others • Understand the needs of the company Software Development can be a lifetime career. WANT PIZZA FOR DINNER? Matt’s cooking tips. Directions: 1. Buy 2 nicely golden cod from you local natural food store. 2. Pound until tenderized 3. Sauté in olive oil with thyme and rosemary until nicely browned. 4. Place in oven w/ rice and lemon juice for 20 minutes at 350°. 5. Take a bite. 6. Order a pizza. www.protolabs.com/careers