We consider the following basic problem: given an $n$-variate degree-$d$ homogeneous polynomial $f$ with real coefficients, compute a unit vector $x \in \mathbb{R}^n$ that maximizes $|f(x)|$. Besides its fundamental nature, this problem arises in many diverse contexts ranging from tensor and operator norms to graph expansion to quantum information theory. The homogeneous degree $2$ case is efficiently solvable as it corresponds to computing the spectral norm of an associated matrix, but the higher degree case is NP-hard. In this work, we give multiplicative approximation algorithms for this problem. Our algorithms leverage the tractability of the degree $2$ case, and output the best solution among a carefully constructed set of quadratic polynomials. They offer a trade-off between the approximation ratio and running time, which is governed by the number of quadratic problems we search over. Specifically, in $n^{O(q)}$ time, we get an approximation factor of $O_d((n/q)^{d/2-1})$ for arbitrary polynomials, and $O_d((n/q)^{d/4-1/2})$ for polynomials with non-negative coefficients. The approximation guarantees are with respect to the optimum of the level-$q$ SoS SDP relaxation of the problem. We also consider the case when $f$ is random with independent $\pm 1$ coefficients, and prove that w.h.p the level-$q$ SoS solution gives a certificate within factor $\tilde{O}_d((n/q)^{d/4-1/2})$ of the optimum. We complement our algorithmic results with some polynomially large integrality gaps for $d$-levels of the SoS relaxation. To obtain our results, we develop general techniques which help analyze the approximation obtained by higher levels of the SoS hierarchy. We believe these techniques will also be useful in understanding polynomial optimization for other constrained settings. Joint work with Mrinalkanti Ghosh, Venkatesan Guruswami, Euiwoong Lee and Madhur Tulsiani.