DEVELOPMENT THROUGH MY EYES Matthew Hartloff

advertisement
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
Download